/**
 * 将modelSchemaMap的属性数据转换为modelSelectTree的子节点格式
 * @param {Object} modelSchemaMap - 模型schema映射对象
 * @param {Array} modelSelectTree - 模型选择树数组
 * @returns {Array} 处理后的modelSelectTree
 */
export const convertModelPropertiesToTreeNodes = (modelSchemaMap, modelSelectTree) => {
  if (!modelSchemaMap || !modelSelectTree) {
    return modelSelectTree
  }
  // console.log('所有模型发布版本存在 Schema 内容的数据：', modelSchemaMap)
  // console.log('已配置的表单模型数据：', modelSelectTree)
  // 深拷贝modelSelectTree，避免直接修改原数据
  const processedTree = JSON.parse(JSON.stringify(modelSelectTree))

  // 遍历modelSelectTree
  const processNode = (node) => {
    // 在modelSchemaMap中查找匹配的模型数据
    const modelData = modelSchemaMap?.[node.id]?.root

    if (modelData?.properties) {
      // 将properties转换为子节点格式
      const propertyNodes = Object.entries(modelData.properties).map(([key, value]) => ({
        code: `${node.id}__${key}`,
        id: `${node.id}__${key}`,
        name: value.title || key,
        propertiesType: value.type || 'string',
        parentName: node.name,
        parentId: node.id,
        isProperty: true,
        modelId: node.id,
      }))

      // 如果node.children不存在，初始化为空数组
      if (!node.children) {
        node.children = []
      }

      // 将属性节点添加到children中
      node.children.push(...propertyNodes)
    } else {
      // console.log('节点无属性数据:', node.id, {
      //   hasModelData: !!modelData,
      //   modelData
      // })
    }

    // 递归处理子节点
    if (node.children && Array.isArray(node.children)) {
      node.children.forEach((childNode) => {
        if (!childNode.isProperty) {
          // 只处理非属性节点
          processNode(childNode)
        }
      })
    }
  }

  // 处理树中的每个顶层节点
  processedTree.forEach((node) => processNode(node))

  return processedTree
}
